package Dialogos.Modal.Entidad.Cliente;

import Sistema.Configuracion;
import java.util.logging.Logger;
import Persistencia.Definicion.Cliente;
import Logica.Dialogo.Entidad.Modal.BuscarClienteDlgLogic;

import com.vaadin.ui.Table;
import com.vaadin.ui.Button;
import com.vaadin.ui.Window;
import com.vaadin.ui.TextField;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.HorizontalLayout;

/* @author cerimice */
public class BuscarClienteDlg extends Window
    {
    private BuscarClienteDlgLogic   logicaObj;
    private TextField               claveCliente,nombreCliente,telefonoFijoCliente,telefonoMovilCliente;
    private TextField               valor;
    private Button                  buscar,seleccionar;
    private Table                   tabla;
    
    public BuscarClienteDlg(String caption,TextField claveCliente,TextField nombreCliente,TextField telefonoFijoCliente,TextField telefonoMovilCliente)
        {
        super(caption);
        this.setModal(true);
        this.claveCliente           = claveCliente;
        this.nombreCliente          = nombreCliente;
        this.telefonoFijoCliente    = telefonoFijoCliente;
        this.telefonoMovilCliente   = telefonoMovilCliente;
        agregarComponentes();
        }
    
    private void agregarComponentes()
        {
        logicaObj   = new BuscarClienteDlgLogic();
        valor       = new TextField();              valor.setWidth("400px");
        buscar      = new Button("Buscar");         buscar.setWidth("100px");
        seleccionar = new Button("Seleccionar");    seleccionar.setWidth("100px");
        tabla       = new Table();
            tabla.setNullSelectionAllowed(false);
            tabla.setSelectable(true);
            tabla.setImmediate(true);
            tabla.addContainerProperty("Clave",String.class,"");
            tabla.addContainerProperty("Nombre",String.class,"");
            tabla.setColumnWidth("Clave",100);
            tabla.setColumnWidth("Nombre",380);
            tabla.setWidth("500px");
        
        buscar.addListener(new Button.ClickListener()  {@Override public void buttonClick(Button.ClickEvent event){buscarCliente();}});
        seleccionar.addListener(new Button.ClickListener()  {@Override public void buttonClick(Button.ClickEvent event){seleccionarCliente();}});
        
        HorizontalLayout busqueda =  new HorizontalLayout();
            busqueda.setCaption("Proporciona el nombre del cliente");
            busqueda.addComponent(valor);
            busqueda.addComponent(buscar);
        HorizontalLayout  resultado =  new HorizontalLayout();
            resultado.setCaption("Resultado de busqueda");
            resultado.addComponent(tabla);
            resultado.addComponent(seleccionar);
            resultado.setComponentAlignment(seleccionar, Alignment.BOTTOM_RIGHT);
        VerticalLayout principal = new VerticalLayout();
            principal.addComponent(busqueda);
            principal.addComponent(resultado);
                principal.setComponentAlignment(busqueda, Alignment.TOP_CENTER);
                principal.setComponentAlignment(resultado, Alignment.TOP_CENTER);
                principal.setSizeUndefined();
        this.setContent(principal);
        buscarCliente();
        }
    
    private void buscarCliente()
        {tabla = logicaObj.getListaCliente(tabla,(String)valor.getValue());}
    
    private void seleccionarCliente()
        {
        String clvCliente = (String)tabla.getValue();
        if(clvCliente.equals(""))
            {
            getWindow().showNotification("Advertencia...","Por favor selecciones un valor de la tabla",Notification.TYPE_WARNING_MESSAGE);
            return;
            }
        try
            {
            Cliente obj = logicaObj.getDatoCliente(clvCliente);
            claveCliente.setValue(obj.getClave());
            nombreCliente.setValue(obj.getNombreCompleto());
            telefonoFijoCliente.setValue(obj.getTelefonoFijo());
            telefonoMovilCliente.setValue(obj.getTelefonoMovil());
            }
        catch (Exception ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),ex.getMessage());}
        (this.getParent()).removeWindow(this);
        }
    }
